/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Clases;

import Persistencia.Convenio;
import Persistencia.Entidad;
import Persistencia.Estudiante;
import Persistencia.Prueba;
import Persistencia.ResumenSemPracProf;
import Persistencia.Supervisor;
import Persistencia.SupervisorEntidad;
import PersistenciaController.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class FResumenSemPracticaProf implements Formato, Serializable {

    public ResumenSemPracProf resPracProf = new ResumenSemPracProf();
    private int periodoAcademico;
    private Date fecha;
    private String nombreEntidad;
    private String nitEntidad;
    private String telefonosEntidad;
    private String faxEntidad;
    private String direccionEntidad;
    private String nombreSupervisorEnt;
    private String cargoSupervisorEnt;
    private String telefonoSupervisorEnt;
    private String celularSupervisorEnt;
    private String nombreSupervisorUniv;
    private String correoSupevisorUniv;
    private String telefonoSupervisorUniv;
    private String celularSupervisorUniv;
    private String nombrePracticante;
    private String codigoPracticante;
    private String telefonoPracticante;
    private String celularPracticante;
    private String correoPracticante;
    private Date fechaVisitaInicial;
    private String areaTrabajo;
    private String aspectosTratadosVisIni;
    private String acuerdosRealizados;
    private String procesosEjecutados;
    private String analisisBreve;
    private String valoracionFundamentacion;
    private Date fechaVisitaFinal;
    private String aspectosTratadosVisFin;
    private String analisisActivProg;
    private String aspectosMejorarHab;
    private String horarioPracticaDe;
    private String horarioPracticaHasta;
    private int semanasTrabajadas;
    private int horasRealesSemanales;
    private int semanasDiasNoTrabajados;
    private Boolean justificados;
    private ResumenSemPracProfJpaController resumenSemPracticaProfJpaController = null;
    private EstudianteJpaController estudianteJpaController = null;
    private PaisJpaController paisJpaController = null;
    private PruebaJpaController pruebaJpaController = null;
    
    private SupervisorJpaController supervisorJpaController = null;
    private EntidadJpaController entidadJpaController = null;
    
    private SupervisorEntidadJpaController supervisorEntidadJpaController = null;
    private ConvenioJpaController convenioJpaController = null;
    public Estudiante e = new Estudiante();
    Prueba p = new Prueba();
    public List<Estudiante> listaEstuiantes = new ArrayList<Estudiante>();
    public int estudianteSelected = 0;
    public Entidad entidad = new Entidad();
    public Supervisor supervisor = new Supervisor();
    public SupervisorEntidad supervisorEntidad = new SupervisorEntidad();
    public Estudiante estudiante= new Estudiante();
    public ResumenSemPracProf resumen = new ResumenSemPracProf();

    public FResumenSemPracticaProf() {
    }

    @PostConstruct // Este postconstructor es necesario para los contextos y enlazar el controlador de persistencia
    public void InicializarVariables() {
        FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        inicializarControladores();
        
        // Se quema el supervisor con el objetivo que cuando se haga el login se traiga dinamicamente
        if (estudianteSelected == 0) {
            listaEstuiantes.clear();
            // Linea de la sesion
            Supervisor s = supervisorJpaController.findSupervisor(3010);
            listaEstuiantes = s.getEstudianteList();

        }
        




    }

    public void llenarCampos() {

        if (estudianteSelected > 0) {
            Estudiante e = estudianteJpaController.findEstudiante(estudianteSelected);
            estudiante=e;
            Convenio convenio = new Convenio();
            convenio = convenioJpaController.buscarEntidadxConvenio(estudianteSelected);
            entidad = convenio.getIdEntidad();
            System.out.println(entidad.getNombreentidad());
            supervisor = e.getIdSupervisor();
            supervisorEntidad = supervisorEntidadJpaController.buscarSupervidorxConvenio(entidad);
        } else {
            // mientras hacen el loguin
            Supervisor s = supervisorJpaController.findSupervisor(3010);
            supervisor = s;
            if(entidad!=null)
            {
            supervisorEntidad = supervisorEntidadJpaController.buscarSupervidorxConvenio(entidad);
            }
            
            
            
        }
        System.out.println(entidad.getNombreentidad() + "--" + supervisor.getNombressupervisor() + "--" + supervisorEntidad.getNombresSupervisorEntidad());
    }

    public void ponerTexto(String texto) {
        Supervisor sup = new Supervisor();
        this.nombreEntidad = texto;
        setNombreEntidad(nombreEntidad);

        System.out.println("aqui entró.... sigue la impresion del valor que recibe");
        System.out.println(nombreEntidad);
    }

    public void ejecutarDiligenciar() {
        DiligenciarFormato();
    }

    public void ejecutarConsultar() {
        ConsultarFormato();
    }

    public void ejecutarAprobar() {
        AprobarFormato();
    }

    public void ejecutarEditar() {
        EditarFormato();
    }

    @Override
    public void ConsultarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.        

    }

    @Override
    public void DiligenciarFormato() {

        Prueba p = new Prueba();
        p = pruebaJpaController.findIdPrueba(171);
        System.out.println(p.getNombrePrueba());
        Estudiante e = new Estudiante();
        e = estudianteJpaController.findIdEstudiante(80739686);
        System.out.println(e.getApellidosEstudiante() + ' ' + e.getNombresEstudiante() + ' ' + e.getCedulaEstudiante()
                + ' ' + e.getCorreoestudiante());
        Entidad en = new Entidad();
        en = entidadJpaController.findEntidad(2);
        System.out.println(en.getNombreentidad());
        Supervisor sup = new Supervisor();
        sup = supervisorJpaController.findSupervisor(3010);
        System.out.println(sup.getApellido1Supervisor());
        nombreEntidad = sup.getApellido1Supervisor();
        ponerTexto(nombreEntidad);


        // ResumenSemPracProf resumen = new ResumenSemPracProf();
        //resumen.setIdResSemPrac(areaTrabajo);
//            Estudiante idEstud = new Estudiante();
//            Supervisor idSuperv = new Supervisor();
//            idEstud = estudianteJpaController.findEstudiante(periodoAcademico);
//            resPracProf.setIdSupervisor(idSuperv);
//            resPracProf.setIdEstudiante(idEstud.getIdEstudiante().toString());
//            resumenSemPracticaProfJpaController.create(resPracProf); //Se insertan los datos en la base de datos
    }

    @Override
    public void AprobarFormato() {
    }

    @Override
    public void EditarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public void addMessage(String summary) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, null);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public int getPeriodoAcademico() {
        return periodoAcademico;
    }

    public void setPeriodoAcademico(int periodoAcademico) {
        this.periodoAcademico = periodoAcademico;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getNombreEntidad() {
        return nombreEntidad;
    }

    public void setNombreEntidad(String nombreEntidad) {
        this.nombreEntidad = nombreEntidad;
    }

    public String getNitEntidad() {
        return nitEntidad;
    }

    public void setNitEntidad(String nitEntidad) {
        this.nitEntidad = nitEntidad;
    }

    public String getTelefonosEntidad() {
        return telefonosEntidad;
    }

    public void setTelefonosEntidad(String telefonosEntidad) {
        this.telefonosEntidad = telefonosEntidad;
    }

    public String getDireccionEntidad() {
        return direccionEntidad;
    }

    public void setDireccionEntidad(String direccionEntidad) {
        this.direccionEntidad = direccionEntidad;
    }

    public String getNombreSupervisorEnt() {
        return nombreSupervisorEnt;
    }

    public void setNombreSupervisorEnt(String nombreSupervisorEnt) {
        this.nombreSupervisorEnt = nombreSupervisorEnt;
    }

    public String getCargoSupervisorEnt() {
        return cargoSupervisorEnt;
    }

    public void setCargoSupervisorEnt(String cargoSupervisorEnt) {
        this.cargoSupervisorEnt = cargoSupervisorEnt;
    }

    public String getTelefonoSupervisorEnt() {
        return telefonoSupervisorEnt;
    }

    public void setTelefonoSupervisorEnt(String telefonoSupervisorEnt) {
        this.telefonoSupervisorEnt = telefonoSupervisorEnt;
    }

    public String getCelularSupervisorEnt() {
        return celularSupervisorEnt;
    }

    public void setCelularSupervisorEnt(String celularSupervisorEnt) {
        this.celularSupervisorEnt = celularSupervisorEnt;
    }

    public String getFaxEntidad() {
        return faxEntidad;
    }

    public void setFaxEntidad(String faxEntidad) {
        this.faxEntidad = faxEntidad;
    }

    public String getNombreSupervisorUniv() {
        return nombreSupervisorUniv;
    }

    public void setNombreSupervisorUniv(String nombreSupervisorUniv) {
        this.nombreSupervisorUniv = nombreSupervisorUniv;
    }

    public String getCorreoSupevisorUniv() {
        return correoSupevisorUniv;
    }

    public void setCorreoSupevisorUniv(String correoSupevisorUniv) {
        this.correoSupevisorUniv = correoSupevisorUniv;
    }

    public String getTelefonoSupervisorUniv() {
        return telefonoSupervisorUniv;
    }

    public void setTelefonoSupervisorUniv(String telefonoSupervisorUniv) {
        this.telefonoSupervisorUniv = telefonoSupervisorUniv;
    }

    public String getCelularSupervisorUniv() {
        return celularSupervisorUniv;
    }

    public void setCelularSupervisorUniv(String celularSupervisorUniv) {
        this.celularSupervisorUniv = celularSupervisorUniv;
    }

    public String getNombrePracticante() {
        return nombrePracticante;
    }

    public void setNombrePracticante(String nombrePracticante) {
        this.nombrePracticante = nombrePracticante;
    }

    public String getCodigoPracticante() {
        return codigoPracticante;
    }

    public void setCodigoPracticante(String codigoPracticante) {
        this.codigoPracticante = codigoPracticante;
    }

    public String getTelefonoPracticante() {
        return telefonoPracticante;
    }

    public void setTelefonoPracticante(String telefonoPracticante) {
        this.telefonoPracticante = telefonoPracticante;
    }

    public String getCelularPracticante() {
        return celularPracticante;
    }

    public void setCelularPracticante(String celularPracticante) {
        this.celularPracticante = celularPracticante;
    }

    public String getCorreoPracticante() {
        return correoPracticante;
    }

    public void setCorreoPracticante(String correoPracticante) {
        this.correoPracticante = correoPracticante;
    }

    public Date getFechaVisitaInicial() {
        return fechaVisitaInicial;
    }

    public void setFechaVisitaInicial(Date fechaVisitaInicial) {
        this.fechaVisitaInicial = fechaVisitaInicial;
    }

    public String getAreaTrabajo() {
        return areaTrabajo;
    }

    public void setAreaTrabajo(String areaTrabajo) {
        this.areaTrabajo = areaTrabajo;
    }

    public String getAspectosTratadosVisIni() {
        return aspectosTratadosVisIni;
    }

    public void setAspectosTratadosVisIni(String aspectosTratadosVisIni) {
        this.aspectosTratadosVisIni = aspectosTratadosVisIni;
    }

    public String getAcuerdosRealizados() {
        return acuerdosRealizados;
    }

    public void setAcuerdosRealizados(String acuerdosRealizados) {
        this.acuerdosRealizados = acuerdosRealizados;
    }

    public String getProcesosEjecutados() {
        return procesosEjecutados;
    }

    public void setProcesosEjecutados(String procesosEjecutados) {
        this.procesosEjecutados = procesosEjecutados;
    }

    public String getAnalisisBreve() {
        return analisisBreve;
    }

    public void setAnalisisBreve(String analisisBreve) {
        this.analisisBreve = analisisBreve;
    }

    public String getValoracionFundamentacion() {
        return valoracionFundamentacion;
    }

    public void setValoracionFundamentacion(String valoracionFundamentacion) {
        this.valoracionFundamentacion = valoracionFundamentacion;
    }

    public Date getFechaVisitaFinal() {
        return fechaVisitaFinal;
    }

    public void setFechaVisitaFinal(Date fechaVisitaFinal) {
        this.fechaVisitaFinal = fechaVisitaFinal;
    }

    public String getAspectosTratadosVisFin() {
        return aspectosTratadosVisFin;
    }

    public void setAspectosTratadosVisFin(String aspectosTratadosVisFin) {
        this.aspectosTratadosVisFin = aspectosTratadosVisFin;
    }

    public String getAnalisisActivProg() {
        return analisisActivProg;
    }

    public void setAnalisisActivProg(String analisisActivProg) {
        this.analisisActivProg = analisisActivProg;
    }

    public String getAspectosMejorarHab() {
        return aspectosMejorarHab;
    }

    public void setAspectosMejorarHab(String aspectosMejorarHab) {
        this.aspectosMejorarHab = aspectosMejorarHab;
    }

    public String getHorarioPracticaDe() {
        return horarioPracticaDe;
    }

    public void setHorarioPracticaDe(String horarioPracticaDe) {
        this.horarioPracticaDe = horarioPracticaDe;
    }

    public String getHorarioPracticaHasta() {
        return horarioPracticaHasta;
    }

    public void setHorarioPracticaHasta(String horarioPracticaHasta) {
        this.horarioPracticaHasta = horarioPracticaHasta;
    }

    public int getSemanasTrabajadas() {
        return semanasTrabajadas;
    }

    public void setSemanasTrabajadas(int semanasTrabajadas) {
        this.semanasTrabajadas = semanasTrabajadas;
    }

    public int getHorasRealesSemanales() {
        return horasRealesSemanales;
    }

    public void setHorasRealesSemanales(int horasRealesSemanales) {
        this.horasRealesSemanales = horasRealesSemanales;
    }

    public int getSemanasDiasNoTrabajados() {
        return semanasDiasNoTrabajados;
    }

    public void setSemanasDiasNoTrabajados(int semanasDiasNoTrabajados) {
        this.semanasDiasNoTrabajados = semanasDiasNoTrabajados;
    }

    public Boolean getJustificados() {
        return justificados;
    }

    public void setJustificados(Boolean justificados) {
        this.justificados = justificados;
    }

    //estos metodos getter y setter son el resPracProf
    // Se usan para cargar los campos desde el formulario y cargarlos como un todo
    // ver mas arriba linea 93
    public ResumenSemPracProf getResPracProf() {
        return resPracProf;
    }

    public void setResPracProf(ResumenSemPracProf resPracProf) {
        this.resPracProf = resPracProf;
    }

    public List<Estudiante> getListaEstuiantes() {
        return listaEstuiantes;
    }

    public Entidad getEntidad() {
        return entidad;
    }

    public void setEntidad(Entidad entidad) {
        this.entidad = entidad;
    }

    public Supervisor getSupervisor() {
        return supervisor;
    }

    public void setSupervisor(Supervisor supervisor) {
        this.supervisor = supervisor;
    }

    public SupervisorEntidad getSupervisorEntidad() {
        return supervisorEntidad;
    }

    public void setSupervisorEntidad(SupervisorEntidad supervisorEntidad) {
        this.supervisorEntidad = supervisorEntidad;
    }

    
    public void setListaEstuiantes(List<Estudiante> listaEstuiantes) {
        this.listaEstuiantes = listaEstuiantes;
    }

    public int getEstudianteSelected() {
        return estudianteSelected;
    }

    public void setEstudianteSelected(int estudianteSelected) {
        this.estudianteSelected = estudianteSelected;
    }

    public Estudiante getEstudiante() {
        return estudiante;
    }

    public void setEstudiante(Estudiante estudiante) {
        this.estudiante = estudiante;
    }

    public ResumenSemPracProf getResumen() {
        return resumen;
    }

    public void setResumen(ResumenSemPracProf resumen) {
        this.resumen = resumen;
    }

    
    
    private void inicializarControladores() {
        FacesContext context = FacesContext.getCurrentInstance();
        pruebaJpaController = (PruebaJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "pruebaJpaController");
        estudianteJpaController = (EstudianteJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "estudianteJpaController");
        supervisorJpaController = (SupervisorJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "supervisorJpaController");
        entidadJpaController = (EntidadJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "entidadJpaController");
        supervisorEntidadJpaController = (SupervisorEntidadJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "supervisorEntidadJpaController");
        convenioJpaController = (ConvenioJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "convenioJpaController");
    }
}
